//package com.huaru.message.utile;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.alibaba.fastjson.serializer.SerializerFeature;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.util.*;
//
//public class TestNetwork {
//    private static final int SLEEP_TIME = 2*1000 ;
//    public static void main(String[] args) {
//        Properties props = System.getProperties();
//        String os = props.getProperty("os.name").toLowerCase();
//        os = os.startsWith("win")?"windows":"linux";
//        Map<String,String> result = new HashMap<>();
//        Process pro = null;
//        Runtime r = Runtime.getRuntime();
//        BufferedReader input = null;
//        String rxPercent = "";
//        String txPercent = "";
//        try {
//            String command = "windows".equals(os)?"netstat -e":"ifconfig";
//            pro = r.exec(command);
//            input = new BufferedReader(new InputStreamReader(pro.getInputStream()));
//            long result1[] = readInLine1(input, os);
//            Thread.sleep(SLEEP_TIME);
//            pro.destroy();
//            input.close();
//            pro = r.exec(command);
//            input = new BufferedReader(new InputStreamReader(pro.getInputStream()));
//            long result2[] = readInLine1(input, os);
//            rxPercent = formatNumber((result2[0]-result1[0])/(1024.0*(SLEEP_TIME / 1000))); // 上行速率(kB/s)
//            txPercent = formatNumber((result2[1]-result1[1])/(1024.0*(SLEEP_TIME / 1000))); // 下行速率(kB/s)
//        } catch (Exception e) {
//            e.printStackTrace();
//        }finally{
//            if(input!=null){
//                try {
//                    input.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//            Optional.ofNullable(pro).ifPresent(p->p.destroy());
//        }
//        result.put("rxPercent",rxPercent);// 下行速率
//        result.put("txPercent",txPercent);// 上行速率
//        System.out.println(result);
//
//    }
//
//    private static long[] readInLine1(BufferedReader input, String osType) {
//        long arr[] = new long[2];
//        StringTokenizer tokenStat = null;
//        try {
//            if (osType.equals("linux")) { // 获取linux环境下的网口上下行速率
//                long rx=0,tx = 0;
//                String line = null;
//                //RX packets:4171603 errors:0 dropped:0 overruns:0 frame:0
//                //TX packets:4171603 errors:0 dropped:0 overruns:0 carrier:0
//                while((line=input.readLine())!=null){
//                    if(line.indexOf("RX packets")>=0){
//                        rx+=Long.parseLong(line.substring(line.indexOf("RX packets")+11,line.indexOf(" ",line.indexOf("RX packets")+11)));
//                    }else if(line.indexOf("TX packets")>=0){
//                        tx+=Long.parseLong(line.substring(line.indexOf("TX packets")+11,line.indexOf(" ",line.indexOf("TX packets")+11)));
//                    }
//                }
//                arr[0]=rx;
//                arr[1]=tx;
//            } else { // 获取windows环境下的网口上下行速率
//                input.readLine();
//                input.readLine();
//                input.readLine();
//                input.readLine();
//                tokenStat = new StringTokenizer(input.readLine());
//                tokenStat.nextToken();
//                arr[0] = Long.parseLong(tokenStat.nextToken());
//                arr[1] = Long.parseLong(tokenStat.nextToken());
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return arr;
//    }
//
//
//    /**
//
//     * 获取Windows环境下网口的上下行速率
//
//     * @return
//
//     */
//
//    public static String getNetworkThroughputForWindows() {
//        Process pro1 = null;
//
//        Process pro2 = null;
//
//        Runtime r = Runtime.getRuntime();
//
//        BufferedReader input = null;
//
//        String rxPercent = "";
//
//        String txPercent = "";
//
//        JSONObject jsonObject = new JSONObject();
//
//        try {
//            String command = "netstat -e";
//
//            pro1 = r.exec(command);
//
//            input = new BufferedReader(new InputStreamReader(pro1.getInputStream()));
//
//            String result1[] = readInLine(input, "windows");
//
//            Thread.sleep(1000);
//
//            pro2 = r.exec(command);
//
//            input = new BufferedReader(new InputStreamReader(pro2.getInputStream()));
//
//            String result2[] = readInLine(input, "windows");
//
//            rxPercent = formatNumber((Long.parseLong(result2[0]) - Long.parseLong(result1[0]))
//
//                    / (float) (1024 * 1024 * (1000 / 1000))); // 上行速率(MB/s)
//
//            txPercent = formatNumber((Long.parseLong(result2[1]) - Long.parseLong(result1[1]))
//
//                    / (float) (1024 * 1024 * (1000 / 1000))); // 下行速率(MB/s)
//
//            input.close();
//
//            pro1.destroy();
//
//            pro2.destroy();
//
//        } catch (Exception e) {
//
//        }
//
//        jsonObject.put("rxPercent", rxPercent); // 下行速率
//
//        jsonObject.put("txPercent", txPercent); // 上行速率
//
//        return JSON.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
//
//    }
//    /**
//
//     * 格式化浮点数(float 和 double)，保留两位小数
//
//     *
//
//     * @param obj
//
//     * @return
//
//     */
//
//    private static String formatNumber(Object obj) {
//        String result = "";
//
//        if (obj.getClass().getSimpleName().equals("Float")) {
//            result = new Formatter().format("%.2f", (float) obj).toString();
//
//        } else if (obj.getClass().getSimpleName().equals("Double")) {
//            result = new Formatter().format("%.2f", (double) obj).toString();
//
//        }
//
//        return result;
//
//    }
//
//    /**
//
//     * 获取网口上下行速率
//
//     *
//
//     * @param input
//
//     * @return
//
//     */
//
//    public static String[] readInLine(BufferedReader input, String osType) {
//        String rxResult = "";
//
//        String txResult = "";
//
//        StringTokenizer tokenStat = null;
//
//        try {
//            if (osType.equals("linux")) { // 获取linux环境下的网口上下行速率
//
//                String result[] = input.readLine().split(" ");
//
//                int j = 0, k = 0;
//
//                for (int i = 0; i < result.length; i++) {
//                    if (result[i].indexOf("RX") != -1) {
//                        j++;
//
//                        if (j == 2) {
//                            rxResult = result[i + 1].split(":")[1];
//
//                        }
//
//                    }
//
//                    if (result[i].indexOf("TX") != -1) {
//                        k++;
//
//                        if (k == 2) {
//                            txResult = result[i + 1].split(":")[1];
//
//                            break;
//
//                        }
//
//                    }
//
//                }
//
//            } else { // 获取windows环境下的网口上下行速率
//
//                input.readLine();
//
//                input.readLine();
//
//                input.readLine();
//
//                input.readLine();
//
//                tokenStat = new StringTokenizer(input.readLine());
//
//                tokenStat.nextToken();
//
//                rxResult = tokenStat.nextToken();
//
//                txResult = tokenStat.nextToken();
//
//            }
//
//        } catch (Exception e) {
//
//
//        }
//
//        String arr[] = { rxResult, txResult };
//
//        return arr;
//
//    }
//}
